<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>组合函数的使用</title>
</head>
<body>
    
    <script>

        /*
            组合函数是多个函数结合成一个函数并按照指定的顺序执行操作
        */

        // 第一个函数
        function double(num){
            return num * 2;
        }

        // 第二个函数
        function pow(num){
            return num * num;
        }

        // 组合函数
        function compose(...fns){
            /*
             边界判定
              判定参数个数 
              判定参数类型
            */

            function composeFn(...args){
                let result = fns[0].apply(this, args);
                for (let i = 1; i < fns.length; i++) {
                    result = fns[i].call(this, result);
                }
                return result;
            }

            return composeFn;
        }

        const fn = compose(double, pow) // 返回组合函数

        console.log(fn(100)); // 使用组合函数


    </script>


</body>
</html>